home *** CD-ROM | disk | FTP | other *** search
/ The Game Master (3rd Edition) / The Game Master 3rd edition.iso / files / game_cga / cgagame3 / startrek.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1983-09-07  |  25.1 KB  |  587 lines

  1. 1  KEY 1,"NAV"+CHR$(13)
  2. 2  KEY 2,"SRS"+CHR$(13):KEY 3,"LRS"+CHR$(13):KEY 4,"PHA"+CHR$(13)
  3. 3  KEY 5,"TOR"+CHR$(13):KEY 6,"SHE"+CHR$(13):KEY 7,"DAM"+CHR$(13)
  4. 4  KEY 8,"COM"+CHR$(13)
  5. 5  KEY 9,"":KEY 10,""
  6. 9  KEY ON
  7. 10  REM ****INSTRUCTIONS  FOR SUPER STAR TREK FROM CREATIVE COMPUTING
  8. 20  REM ****PUT ON IBM PC BY STEVENS ON 2-10-82
  9. 30  CLS:LOCATE 9,1
  10. 40  PRINT TAB(10);"*************************************"
  11. 50  PRINT TAB(10);"*                                   *"
  12. 60  PRINT TAB(10);"*      ** SUPER STAR TREK **        *"
  13. 70  PRINT TAB(10);"*                                   *"
  14. 80  PRINT TAB(10);"*************************************"
  15. 90  FOR I=1 TO 8: PRINT:NEXT I
  16. 100  INPUT "DO YOU NEED INSTRUCTIONS (Y/N)"; K$: IF K$<>"Y" AND K$ <>"y" THEN 1450
  17. 110  PRINT
  18. 120  PRINT :PRINT
  19. 130  IF INP(1)=13 THEN 130
  20. 140  POKE 1229,2
  21. 150  POKE 1237,3
  22. 160  CLS:PRINT"     INSTRUCTIONS FOR `SUPER STAR TREK'"
  23. 170  PRINT
  24. 180  PRINT"1. WHEN YOU SEE \COMMAND ?\ PRINTED, ENTER ONE OF THE LEGAL"
  25. 190  PRINT"     COMMANDS (NAV,SRS,LRS,PHA,TOR,SHE,DAM,COM, OR XXX)."
  26. 200  PRINT "2. IF YOU SHOULD TYPE IN AN ILLEGAL COMMAND, YOU'LL GET A SHORT"
  27. 210  PRINT "    LIST OF THE LEGAL COMMANDS PRINTED OUT."
  28. 220  PRINT"3. SOME COMMANDS REQUIRE YOU TO ENTER DATA (FOR EXAMPLE, THE"
  29. 230  PRINT"     `NAV' COMMAND COMES BACK WITH `COURSE (1-9) ?'.)  IF YOU"
  30. 240  PRINT"     TYPE IN ILLEGAL DATA (LIKE NEGATIVE NUMBERS, THAT COMMAND"
  31. 250  PRINT"     WILL BE ABORTED"
  32. 260  PRINT
  33. 270  PRINT"     THE GALAXY IS DIVIDED INTO AN 8 X 8 QUADRANT GRID,"
  34. 280  PRINT"AND EACH QUADRANT IS FURTHER DIVIDED INTO AN 8 X 8 SECTOR GRID."
  35. 290  PRINT
  36. 300  PRINT"     YOU WILL BE ASSIGNED A STARTING POINT SOMEWHERE IN THE"
  37. 310  PRINT"GALAXY TO BEGIN A TOUR OF DUTY AS COMMANDER OF THE STARSHIP"
  38. 320  PRINT"\ENTERPRISE\; YOUR MISSION:  TO SEEK AND DESTROY THE FLEET OF"
  39. 330  PRINT"KLINGON WARSHIPS WHICH ARE MENACING THE UNITED FEDERATION OF"
  40. 340  PRINT"PLANETS."
  41. 350  PRINT : PRINT "***TO CONTINUE WITH THE INSTRUCTIONS HIT <ENTER>."
  42. 360  GOSUB 10500:PRINT
  43. 370  PRINT"     YOU HAVE THE FOLLOWING COMMANDS AVAILABLE TO YOU AS CAPTAIN"
  44. 380  PRINT"OF THE STARSHIP ENTERPRISE:"
  45. 390  PRINT
  46. 400  PRINT"\NAV\ COMMAND = WARP ENGINE CONTROL --"
  47. 410  PRINT"     COURSE IS IN A CIRCULAR NUMERICAL      4  3  2"
  48. 420  PRINT"     VECTOR ARRANGEMENT AS SHOWN             . . ."
  49. 430  PRINT"     INTEGER AND REAL VALUES MAY BE           ..."
  50. 440  PRINT"     USED.  (THUS COURSE 1.5 IS HALF-     5 ---*--- 1"
  51. 450  PRINT"     WAY BETWEEN 1 AND 2                      ..."
  52. 460  PRINT"                                             . . ."
  53. 470  PRINT"     VALUES MAY APPROACH 9.0, WHICH         6  7  8"
  54. 480  PRINT"     ITSELF IS EQUIVALENT TO 1.0
  55. 490  PRINT"                                            COURSE"
  56. 500  PRINT"     ONE WARP FACTOR IS THE SIZE OF "
  57. 510  PRINT"     ONE QUADRANT.  THEREFORE, TO GET"
  58. 520  PRINT"     FROM QUADRANT 6,5 TO 5,5, YOU WOULD"
  59. 530  PRINT"     USE COURSE 3, WARP FACTOR 1.
  60. 540  PRINT
  61. 550  PRINT: PRINT : PRINT "***TO CONTINUE WITH THE INSTRUCTIONS, HIT <ENTER>."
  62. 560  GOSUB 10500:PRINT :PRINT:PRINT :PRINT
  63. 570  PRINT :PRINT :PRINT
  64. 580  PRINT"\SRS\ COMMAND = SHORT RANGE SENSOR SCAN"
  65. 590  PRINT
  66. 600  PRINT"     SYMBOLOGY ON YOR SENSOR SCREEN IS AS FOLLOWS:"
  67. 610  PRINT"        <*> = YOUR STARSHIP'S POSITION"
  68. 620  PRINT"        +K+ = KLINGON BATTLE CRUISER"
  69. 630  PRINT"        >!< = FEDERATION STARBASE ( REFUEL/REPAIR/RE-ARM HERE!)"
  70. 640  PRINT"         *  = STAR"
  71. 650  PRINT
  72. 660  PRINT"     A CONDENSED `STATUS REPORT' WILL ALSO BE PRESENTED."
  73. 670  PRINT
  74. 680  PRINT "\LRS\ COMMAND = LONG RANGE SENSOR SCAN"
  75. 690  PRINT"     SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE"
  76. 700  PRINT"     OF THE ENTERPRISE (WHICH IS IN THE MIDDLE OF THE SCAN)"
  77. 710  PRINT
  78. 720  PRINT"     THE SCAN IS CODED IN THE FORM \###\, WHERE THE UNITS DIGIT"
  79. 730  PRINT"     IS THE NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF"
  80. 740  PRINT"     STARBASES, AND THE HUNDREDS DIGIT IS THE NUMBER OF"
  81. 750  PRINT"     KLINGONS."
  82. 760  PRINT
  83. 770  PRINT"     EXAMPLE - 207 = 2 KLINGONS, NO STARBASES,  7 STARS."
  84. 780  PRINT "***TO CONTINUE WITH THE INSTRUCTIONS, HIT <ENTER>."
  85. 790  GOSUB 10500:PRINT :PRINT
  86. 800  PRINT"\PHA\ COMMAND = PHASER CONTROL."
  87. 810  PRINT"     ALLOWS YOU TO DESTROY THE KLINGON BATTLE CRUISERS BY "
  88. 820  PRINT"     ZAPPING THEM WITH SUITABLY LARGE UNITS OF ENERGY TO"
  89. 830  PRINT"     DEPLETE THEIR SHIELD POWER.  REMEMBER, KLINGONS HAVE"
  90. 840  PRINT"     PHASERS, TOO!)"
  91. 850  PRINT
  92. 860  PRINT"\TOR\ COMMAND = PHOTON TORPEDO CONTROL"
  93. 870  PRINT"     TORPEDO COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL"
  94. 880  PRINT"     IF YOU HIT THE KLINGON VESSEL, HE IS DESTROYED AND"
  95. 890  PRINT"     CANNOT FIRE BACK AT YOU.  IF YOU MISS, YOU ARE SUBJECT TO"
  96. 900  PRINT"     HIS PHASER FIRE.  IN EITHER CASE, YOU ARE ALSO SUBJECT TO "
  97. 910  PRINT"     THE PHASER FIRE OF ALL OTHER KLINONS IN THE QUADRANT."
  98. 920  PRINT
  99. 930  PRINT"     THE LIBRARY-COMPUTER (\COM\ COMMAND) HAS AN OPTION TO"
  100. 940  PRINT"     COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)"
  101. 950  PRINT
  102. 960  PRINT :PRINT:PRINT: PRINT "TO CONTINUE WITH THE PROGRAM, HIT <ENTER>."
  103. 970  GOSUB 10500
  104. 980  PRINT :PRINT :PRINT
  105. 990  PRINT :PRINT :PRINT :PRINT
  106. 1000  PRINT"\SHE\ COMMAND = SHIELD CONTROL"
  107. 1010  PRINT"     DEFINES THE NUMBER OF ENERGY UNITS TO BE ASSIGNED TO THE"
  108. 1020  PRINT"     SHIELDS.  ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY.  NOTE"
  109. 1030  PRINT"     THAT THE STATUS DISPLAY TOTAL ENERGY INCLUDES SHIELD ENERGY"
  110. 1040  PRINT
  111. 1050  PRINT"\DAM\ COMMAND = DAMAGE CONTROL REPORT"
  112. 1060  PRINT"     GIVES THE STATE OF REPAIR OF ALL DEVICES.  WHERE A NEGATIVE"
  113. 1070  PRINT"     `STATE OF REPAIR' SHOWS THAT THE DEVICE IS TEMPORARILY"
  114. 1080  PRINT"     DAMAGED."
  115. 1090  PRINT :PRINT :PRINT
  116. 1100  PRINT: PRINT "TO CONTINUE WITH THE INSTRUCTIONS, HIT <ENTER>."
  117. 1110  GOSUB 10500
  118. 1120  PRINT
  119. 1130  PRINT"\COM\ COMMAND = LIBRARY-COMPUTER"
  120. 1140  PRINT"     THE LIBRARY-COMPUTER CONTAINS SIX OPTIONS:"
  121. 1150  PRINT"     OPTION 0 = CUMULATIVE GALACTIC RECORD"
  122. 1160  PRINT"        THIS OPTION SHOWS COMPUTER MEMORY OF THE RESULTS OF A LL"
  123. 1170  PRINT"        PREVIOUS SHORT AND LONG RANGE SENSOR SCANS"
  124. 1180  PRINT"     OPTION 1 = STATUS REPORT"
  125. 1190  PRINT"        THIS OPTION SHOWS THE NUMBER OF KLINGONS, STARDATES,"
  126. 1200  PRINT"        AND STARBASES REMAINING IN THE GAME."
  127. 1210  PRINT"     OPTION 2 = PHOTON TORPEDO DATA"
  128. 1220  PRINT"        WHICH GIVES DIRECTION AND DISTANCE FROM THE ENTERPRISE"
  129. 1230  PRINT"        TO ALL KLINGONS IN YOUR QUADRANT"
  130. 1240  PRINT"     OPTION 3 = STARBASE NAV DATA"
  131. 1250  PRINT"        THIS OPTION GIVES DIRECTION AND DISTANCE TO ANY"
  132. 1260  PRINT"        STARBASE WITHIN YOU QUADRANT"
  133. 1270  PRINT :PRINT :PRINT :PRINT
  134. 1280  PRINT "TO CONTINUE WITH THE INSTRUCTIONS, HIT <ENTER>."
  135. 1290  PRINT
  136. 1300  GOSUB 10500 : PRINT :PRINT
  137. 1310  PRINT "CONTINUATION OF AVAILABLE COMPUTER OPTIONS---" : PRINT : PRINT
  138. 1320  PRINT"     OPTION 4 = DIRECTION/DISTANCE CALCULATOR"
  139. 1330  PRINT"        THIS OPTION ALLOWS YOU TO ENTER COORDINATES FOR"
  140. 1340  PRINT"        DIRECTION/DISTANCE CALCULATIONS"
  141. 1350  PRINT"     OPTION 5 = GALACTIC /REGION NAME/ MAP"
  142. 1360  PRINT"        THIS OPTION PRINTS THE NAMES OF THE SIXTEEN MAJOR"
  143. 1370  PRINT"        GALACTIC REGIONS REFERRED TO IN THE GAME."
  144. 1380  POKE 1229,0:POKE 1237,1
  145. 1390  IF INP(1)=13 THEN 1390
  146. 1400  PRINT :PRINT "CONGRATULATIONS, YOU HAVE SUCCESSFULLY GRADUATED FROM STARFLEET ACADEMY."
  147. 1410  PRINT "YOU ARE NOW READY TO ASSUME THE HELM OF THE ENTERPRISE." :PRINT
  148. 1420  PRINT "TO OPEN COMMUNICATIONS WITH STARFLEET, INDICATING THAT YOU"
  149. 1430  PRINT "ARE NOW READY TO BEGIN YOUR JOURNEY, SIMPLY HIT <ENTER>."
  150. 1440  GOSUB 10500:PRINT
  151. 1450  REM **** SUPER STAR TREK - MAY 16, 1978 - REQUIRES 24K MEMORY ****
  152. 1460  REM
  153. 1470  REM ****        **** STAR TREK ****        ****
  154. 1480  REM **** SIMULATION OF A MISSION OF THE STARSHIP ENTERPRISE,
  155. 1490  REM **** AS SEEN ON THE STAR TREK TV SHOW.
  156. 1600  CLS
  157. 1610  PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
  158. 1620  PRINT"                                    ,------*------,"
  159. 1630  PRINT "                    ,-------------   `---  ------'"
  160. 1640  PRINT "                     `-------- --'      / /"
  161. 1650  PRINT"                         ,---' `-------/ /--,"
  162. 1660  PRINT "                          `----------------'":PRINT
  163. 1670  PRINT"                    THE USS ENTERPRISE --- NCC-1701"
  164. 1680  PRINT:PRINT:PRINT:PRINT:PRINT
  165. 1690  PRINT :PRINT
  166. 1710  Z$="                         "
  167. 1720  DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8),D(8)
  168. 1730  RANDOMIZE VAL(RIGHT$(TIME$,2))
  169. 1770  PRINT :PRINT :PRINT
  170. 1780  T=INT(RND(1)*20+20)*100:T0=T:T9=25+INT(RND(1)*10):D0=0:E=3000:E0=E
  171. 1790  P=10:P0=P:S9=200:S=0:B9=0:K9=0:X$="":X0$=" IS "
  172. 1800  DEF FND(D)=SQR((K(I,1)-S1)^2+(K(I,2)-S2)^2)
  173. 1810  DEF FNR(R)=INT(RND(R)*7.98+1.01)
  174. 1820  REM **************** INITIALIZE ENTERPRISE'S POSITION ****************
  175. 1830  Q1=FNR(1):Q2=FNR(1):S1=FNR(1):S2=FNR(1)
  176. 1840  FOR I=1 TO 9:C(I,1)=0:C(I,2)=0:NEXT I
  177. 1850  C(3,1)=-1:C(2,1)=-1:C(4,1)=-1:C(4,2)=-1:C(5,2)=-1:C(6,2)=-1
  178. 1860  C(1,2)=1:C(2,2)=1:C(6,1)=1:C(7,1)=1:C(8,1)=1:C(8,2)=1:C(9,2)=1
  179. 1870  FOR I=1 TO 8:D(I)=0: NEXT I
  180. 1880  A1$="NAVSRSLRSPHATORSHEDAMCOMXXX"
  181. 1890  REM ************** SETUP WHAT EXISTS IN GALAXY . . . ******************
  182. 1900  REM ************  K3= # KLINGONS  B3= # STARBASES  S3= # STARS ********
  183. 1910  FOR I=1 TO 8: FOR J=1 TO 8:K3=0:Z(I,J)=0:R1=RND(1)
  184. 1920  IF R1>0.98 THEN K3=3:K9=K9+3:GOTO 1950
  185. 1930  IF R1>0.95 THEN K3=2:K9=K9+2:GOTO 1950
  186. 1940  IF R1>0.8 THEN K3=1:K9=K9+1
  187. 1950  B3=0:IF RND(1)>0.96 THEN B3=1:B9=B9+1
  188. 1960  G(I,J)=K3*100+B3*10+FNR(1): NEXT J: NEXT I: IF K9>T9 THEN T9=K9+1
  189. 1970  IF B9<>0 THEN 2000
  190. 1980  IF G(Q1,Q2)<200 THEN G(Q1,Q2)=G(Q1,Q2)+100:K9=K9+1
  191. 1990  B9=0:G(Q1,Q2)=G(Q1,Q2)+10:Q1=FNR(1):Q2=FNR(1)
  192. 2000  K7=K9:IF B9<>1 THEN X$="S":X0$=" ARE "
  193. 2010  CLS:PRINT"YOUR ORDERS, SHOULD YOU ACCEPT THIS MISSION, ARE  AS FOLLOWS:"
  194. 2020  PRINT"     DESTROY THE";K9;"KLINGON WARSHIPS WHICH HAVE INVADED"
  195. 2030  PRINT"   THE GALAXY BEFORE THEY CAN ATTACK FEDERATION HEADQUARTERS"
  196. 2040  PRINT"   ON STARDATE";T0+T9;"  THIS GIVES YOU";T9;"DAYS.  THERE";X0$
  197. 2050  PRINT"  ";B9;"STARBASE";X$;" IN THE GALAXY FOR RESUPPLYING YOUR SHIP"
  198. 2060  PRINT:PRINT"HIT RETURN KEY WHEN READY TO ACCEPT COMMAND"
  199. 2070  I=RND(1)
  200. 2080  REM *********** HERE ANY TIME NEW QUADRANT ENTERED ******************
  201. 2090  Z4=Q1:Z5=Q2:K3=0:B3=0:S3=0:G5=0:D4=0.5*RND(1):Z(Q1,Q2)=G(Q1,Q2)
  202. 2100  IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 2200
  203. 2110  GOSUB 5690 : PRINT : IF  T0<>T THEN 2140
  204. 2120  PRINT "YOUR MISSION BEGINS WITH YOUR STARSHIP LOCATED"
  205. 2130  PRINT "IN THE GALACTIC QUADRANT, `";G2$;"'.":GOTO 2150
  206. 2140  PRINT "NOW ENTERING ";G2$;" QUADRANT . . ."
  207. 2150  PRINT : K3=INT(G(Q1,Q2)*0.01):B3=INT(G(Q1,Q2)*0.1)-10*K3
  208. 2160  S3=G(Q1,Q2)-100*K3-10*B3:IF K3=0 THEN 2190
  209. 2170  PRINT"COMBAT AREA      CONDITION RED": BEEP :IF S>200 THEN 2190
  210. 2180  PRINT "   SHIELDS DANGEROUSLY LOW" : BEEP
  211. 2190  FOR I=1 TO 3:K(I,1)=0:K(I,2)=0:NEXT I
  212. 2200  FOR I=1 TO 3:K(I,3)=0: NEXT I:Q$=Z$+Z$+Z$+Z$+Z$+Z$+Z$+LEFT$(Z$,17)
  213. 2210  REM *** POSITON ENTERPRISE IN QUADRANT, THEN PLACE "K3" KLINGONS, & ***
  214. 2220  REM ***** "B3" STARBASES, & "S3" STARS ELSEWHERE. **************
  215. 2230  A$="<*>":Z1=S1:Z2=S2:GOSUB 5460:IF K3<1 THEN 2260
  216. 2240  FOR I=1 TO K3: GOSUB 5430:A$="+K+":Z1=R1:Z2=R2
  217. 2250  GOSUB 5460:K(I,1)=R1:K(I,2)=R2:K(I,3)=S9*(0.5+RND(1)): NEXT I
  218. 2260  IF B3<1 THEN 2280
  219. 2270  GOSUB 5430:A$=">!<":Z1=R1:B4=R1:Z2=R2:B5=R2:GOSUB 5460
  220. 2280  FOR I=1 TO S3: GOSUB 5430:A$=" * ":Z1=R1:Z2=R2: GOSUB 5460: NEXT I
  221. 2290  GOSUB 4470
  222. 2300  IF S+E>10 THEN IF E>10 OR D(7)=0 THEN 2370
  223. 2310  PRINT:PRINT "** FATAL ERROR ** YOU'VE JUST STRANDED YOUR SHIP IN "
  224. 2320  PRINT "SPACE":PRINT "YOU HAVE INSUFFICIENT MANEUVERING ENERGY,";
  225. 2330  PRINT " AND SHIELD CONTROL":PRINT"IS PRESENTLY INCAPABLE OF CROSS";
  226. 2340  PRINT"-CIRCUITING TO ENGINE ROOM!!"  :SOUND 75,4 : SOUND 44,6
  227. 2350  PRINT :PRINT "LT.UHURA REPORTS ALL RADIO FREQUENCIES ARE INOPERABLE!!"
  228. 2360  GOTO 4330
  229. 2370  INPUT "COMMAND";A$
  230. 2380  FOR I=1 TO 9:IF LEFT$(A$,3)<>MID$(A1$,3*I-2,3) THEN 2400
  231. 2390  ON I GOTO 2510,2290,3290,3380,3600,3960,4050,4730,4360
  232. 2400  NEXT I:PRINT "ENTER ONE OF THE FOLLOWING:"
  233. 2410  PRINT"   NAV  (TO SET COURSE)"
  234. 2420  PRINT"   SRS  (FOR SHORT RANGE SENSOR SCAN)"
  235. 2430  PRINT"   LRS  (FOR LONG RANGE SENSOR SCAN)"
  236. 2440  PRINT"   PHA  (TO FIRE PHASERS)"
  237. 2450  PRINT "   TOR  (TO FIRE PHOTON TORPEDOES)"
  238. 2460  PRINT"   SHE  (TO RAISE OR LOWER SHIELDS)"
  239. 2470  PRINT"   DAM  (FOR DAMAGE CONTROL REPORTS)"
  240. 2480  PRINT"   COM  (TO CALL ON LIBRARY-COMPUTER)"
  241. 2490  PRINT"   XXX  (TO RESIGN YOUR COMMAND)":PRINT:GOTO 2300
  242. 2500  REM ************ COURSE CONTROL BEGINS HERE **********************
  243. 2510  INPUT "COURSE (0-9)";C1: IF C1=9 THEN C1=1
  244. 2520  IF C1>=1 AND C1<9 THEN 2550
  245. 2530  PRINT "   LT. SULU REPORTS, 'INCORRECT COURSE DATA, SIR!'"
  246. 2540  PRINT "WOULD YOU LIKE TO TRY ANOTHER COMMAND, SIR?": GOTO 2300
  247. 2550  X$="8": IF D(1)<0 THEN X$="0.2"
  248. 2560  PRINT "WARP FACTOR  (0-";X$;")";: INPUT W1: IF D(1)<0 AND W1>0.2 THEN 2630
  249. 2570  IF W1>0 AND W1<8 THEN 2640
  250. 2580  IF W1=0 THEN 2300
  251. 2590  PRINT "    CHIEF ENGINEER SCOTT REPORTS `THE ENGINES WON'T TAKE";
  252. 2600  PRINT " WARP "; W1; "!'": PRINT
  253. 2610  PRINT "LET'S EASE IT DOWN SOME, CAPTAIN, OR THE ANTI-MATTER"
  254. 2620  PRINT "PODS WILL SURELY BLOW US ALL UP!!": GOTO 2300
  255. 2630  PRINT "WARP ENGINES ARE DAMAGED.  MAXIUM SPEED = WARP 0.2": BEEP : GOTO 2300
  256. 2640  N=INT(W1*8+0.5):IF E-N>=0 THEN 2720
  257. 2650  PRINT"ENGINEERING REPORTS   "INSUFFICIENT ENERGY AVAILABLE"
  258. 2660  PRINT "                       FOR MANEUVERING AT WARP";W1;"!'" : BEEP
  259. 2670  IF S<N-E OR D(7)<0 THEN 2300
  260. 2680  PRINT"DEFLECTOR CONTROL ROOM ACKNOWLEDGES";S;"UNITS OF ENERGY"
  261. 2690  PRINT"                         PRESENTLY DEPLOYED TO SHIELDS."
  262. 2700  GOTO 2300
  263. 2710  REM ******* KLINGONS MOVE/FIRE ON MOVING STARSHIP . . .***************
  264. 2720  FOR I=1 TO K3:IF K(I,3)=0 THEN 2750
  265. 2730  A$="   ":Z1=K(I,1):Z2=K(I,2):GOSUB 5460:GOSUB 5430
  266. 2740  K(I,1)=Z1:K(I,2)=Z2:A$="+K+": GOSUB 5460
  267. 2750  NEXT I:GOSUB 4210:D1=0:D6=W1:IF W1>=1 THEN D6=1
  268. 2760  FOR I=1 TO 8:IF D(I)>=0 THEN 2810
  269. 2770  D(I)=D(I)+D6: IF D(I)>-0.1 AND D(I)<0 THEN D(I)=-0.1: GOTO 2810
  270. 2780  IF D(I)<0 THEN 2810
  271. 2790  IF D1<>1 THEN D1=1 :PRINT "DAMAGE CONTROL REPORT:  ";
  272. 2800  PRINT  TAB(8);:R1=I:GOSUB 5520:PRINT  G2$;" REPAIR COMPLETED." : BEEP
  273. 2810  NEXT I:IF RND(1)>0.2 THEN 2880
  274. 2820  R1=FNR(1):IF RND(1)>=0.6 THEN 2850
  275. 2830  D(R1)=D(R1)-(RND(1)*5+1) :PRINT"DAMAGE CONTROL REPORT:  ";
  276. 2840  GOSUB 5520:PRINT G2$;" DAMAGED":PRINT: : BEEP :GOTO 2880
  277. 2850  D(R1)=D(R1)+RND(1)*3+1 :PRINT "DAMAGE CONTROL REPORT:  ";
  278. 2860  GOSUB 5520:PRINT G2$" STATE OF REPAIR IMPROVED":PRINT : BEEP
  279. 2870  REM ********* BEGIN MOVING STARSHIP **************************
  280. 2880  A$="   ":Z1=INT(S1):Z2=INT(S2):GOSUB 5460
  281. 2890  X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)):X=S1:Y=S2
  282. 2900  X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)):Q4=Q1:Q5=Q2
  283. 2910  FOR I=1 TO N:S1=S1+X1:S2=S2+X2:IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 3040
  284. 2920  S8=INT(S1)*24+INT(S2)*3-26: IF MID$(Q$,S8,2)="  " THEN 2970
  285. 2930  S1=INT(S1-X1):S2=INT(S2-X2):PRINT "WARP ENGINES SHUT DOWN AT ";
  286. 2940  PRINT "SECTOR";S1;",";S2;"DUE TO BAD NAVIGATION":BEEP :
  287. 2950  PRINT "CHIEF ENGINEER SCOTT REPORTS `THE HULL CAN'T TAKE"
  288. 2960  PRINT "MUCH MORE OF THIS BEATING, SIR'": GOTO 2980
  289. 2970  NEXT I:S1=INT(S1):S2=INT(S2)
  290. 2980  A$="<*>":Z1=INT(S1):Z2=INT(S2): GOSUB 5460:GOSUB 3210:T8=1
  291. 2990  IF W1<1 THEN T8=0.1*INT(10*W1)
  292. 3000  T=T+T8:IF T>T0+T9 THEN 4330
  293. 3010  REM *********** SEE IF DOCKED, THEN GET COMMAND ******************
  294. 3020  GOTO 2290
  295. 3030  REM *********** EXCEEDED QUADRANT LIMITS *************************
  296. 3040  X=8*Q1+X+N*X1:Y=8*Q2+Y+N*X2:Q1=INT(X/8):Q2=INT(Y/8):S1=INT(X-Q1*8)
  297. 3050  S2=INT(Y-Q2*8):IF S1=0 THEN Q1=Q1-1:S1=8
  298. 3060  IF S2=0 THEN Q2=Q2-1:S2=8
  299. 3070  X5=0: IF Q1<1 THEN X5=1:Q1=1:S1=1
  300. 3080  IF Q1>8 THEN X5=1 : Q1=8 : S1=8
  301. 3090  IF Q2<1 THEN X5=1 : Q2=1 : S2=1
  302. 3100  IF Q2>8 THEN X5=1 : Q2=8 : S2=8
  303. 3110  IF X5=0 THEN 3180
  304. 3120  PRINT "LT. UHURA REPORTS A MESSAGE FROM STARFLEET COMMAND:" :BEEP
  305. 3130  PRINT "   `PERMISSION TO ATTEMPT CROSSING OF GALACTIC PERIMETER"
  306. 3140  PRINT " IS HEREBY *DENIED*.  SHUT DOWN YOUR ENGINES.'"
  307. 3150  PRINT "CHIEF ENGINEER SCOTT REPORTS `WARP ENGINES SHUT DOWN"
  308. 3160  PRINT " AT SECTOR";S1;",";S2; " OF QUADRANT";Q1;",";Q2;"."
  309. 3170  IF T>T0 + T9 THEN 4330
  310. 3180  IF 8*Q1+Q2=8*Q4+Q5 THEN 2980
  311. 3190  T=T+1 : GOSUB 3210 : GOTO 2090
  312. 3200  REM ********* MANUEVER ENERGY S/R ******************************
  313. 3210  E=E-N-10 : IF E>0 THEN RETURN
  314. 3220  PRINT "SHIELD CONTROL SUPPIES ENERGY TO COMPLETE THE MANEUVER."
  315. 3230  PRINT
  316. 3240  PRINT "SCOTTY REPORTS,`AYE, CAPTAIN, WE WERE VERY LUCKY THIS TIME"
  317. 3250  PRINT "WE HAD BETTER BE CAREFUL OR  NEXT TIME COULD BE OUR LAST'."
  318. 3260  S=S+E : E=0 : IF S<=0 THEN S=0
  319. 3270  RETURN
  320. 3280  REM *********LONG RANGE SENSOR SCAN CODE*************************
  321. 3290  IF D(3)<0 THEN PRINT "LONG RANGE SENSORS ARE INOPERABLE. ":BEEP : GOTO 2300
  322. 3300  PRINT "LONG RANGE SCAN FOR QUADRANT"; Q1; ","; Q2
  323. 3310  O1$="---------------------" : PRINT O1$
  324. 3320  FOR I=Q1-1 TO Q1+1 : N(1)=-1 : N(2)=-2 : N(3)=-3 : FOR J=Q2-1 TO Q2+1
  325. 3330  IF I>0 AND I<9 AND J>0 AND J<9 THEN N(J-Q2+2)=G(I,J) : Z(I,J)=G(I,J)
  326. 3340  NEXT J: FOR L=1 TO 3: PRINT ":  ";: IF N(L)<0 THEN PRINT "*** ";: GOTO 3360
  327. 3350  PRINT  RIGHT$(STR$(N(L)+1000),3);" ";
  328. 3360  NEXT L: PRINT ":": PRINT O1$: NEXT I: GOTO 2300
  329. 3370  REM ************PHASER CONTROL CODE BEGINS HERE*********************
  330. 3380  IF D(4)<0 THEN PRINT "PHASERS INOPERATIVE": BEEP :GOTO 2300
  331. 3390  IF K3>0 THEN 3420
  332. 3400  PRINT "SCIENCE OFFICER SPOCK REPORTS  `SENSORS SHOW NO ENEMY SHIPS"
  333. 3410  PRINT "                                IN THIS QUADRANT'": GOTO 2300
  334. 3420  IF D(8)<0 THEN PRINT "COMPUTER FAILURE HAMPERS ACCURACY" : BEEP
  335. 3430  PRINT "PHASERS LOCKED ON TARGET;  ";
  336. 3440  PRINT "ENERGY AVAILABLE = ";E;"UNITS"
  337. 3450  INPUT "NUMBER OF UNITS TO FIRE";X:IF X<=0 THEN 2300
  338. 3460  IF E-X<0 THEN 3440
  339. 3470  E=E-X : IF D(7)<0 THEN X=X*RND(1)
  340. 3480  H1=INT(X/K3) : FOR I=1 TO 3 : IF K(I,3)<=0 THEN 3580
  341. 3490  H=INT((H1/RND(0))*(RND(1)+2)) : IF H>0.15*K(I,3) THEN 3510
  342. 3500  PRINT "SENSORS SHOW NO DAMAGE TO ENEMY AT ";K(I,1);","; K(I,2): GOTO 3580
  343. 3510  K(I,3)=K(I,3)-H: PRINT H; "UNIT HIT ON KLINGON AT SECTOR"; K(I,1);",";
  344. 3520  PRINT K(I,2):IF K(I,3)<=0 THEN PRINT "*** KLINGON DESTROYED ***"
  345. 3530  SOUND 45,5
  346. 3540  GOTO 3560
  347. 3550  PRINT "   (SENSORS SHOW"; K(I,3); "UNITS REMAINING)": GOTO 3580
  348. 3560  K3=K3-1:K9=K9-1: Z1=K(I,1): Z2=K(I,2):A$ ="   ": GOSUB 5460
  349. 3570  K(I,3)=0:G(Q1,Q2)=G(Q1,Q2)-100:Z(Q1,Q2)=G(Q1,Q2):IF K9<=0 THEN 4430
  350. 3580  NEXT I: GOSUB 4210: GOTO 2300
  351. 3590  REM ************** PHOTON TORPEDO CODE BEGINS HERE *******************
  352. 3600  IF P<=0 THEN PRINT "ALL PHOTON TORPEDOES EXPENDED":BEEP : GOTO 2300
  353. 3610  IF D(5)<0 THEN PRINT "PHOTON TUBES ARE NOT OPERATIONAL": BEEP : GOTO 2300
  354. 3620  INPUT "PHOTON TORPEDO COURSE (1-9)"; C1: IF C1=9 THEN C1=1
  355. 3630  IF C1>=1 AND C1<9 THEN 3660
  356. 3640  PRINT "ENSIGN CHEKOV REPORTS,   `INCORRECT COURSE DATA, SIR!'"
  357. 3650  GOTO 2300
  358. 3660  X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)):E=E-2: P=P-1
  359. 3670  X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)):X=S1:Y=S2
  360. 3680  PRINT "TORPEDO TRACK:"
  361. 3690  X=X+X1:Y=Y+X2:X3=INT(X+0.5):Y3=INT(Y+0.5)
  362. 3700  IF X3<1 OR X3>8 OR Y3<1 OR Y3>8 THEN 3940
  363. 3710  PRINT "            ";X3;",";Y3:A$="    ":Z1=X:X2=Y: GOSUB 5620
  364. 3720  IF Z3<>0 THEN 3690
  365. 3730  A$="+K+": Z1=X:Z2=Y: GOSUB 5620 : IF Z3=0 THEN 3790
  366. 3740  PRINT "*** KLINGON DESTROYED ***":K3=K3-1:K9=K9-1:SOUND 45,5
  367. 3750  IF K9<=0 THEN 4430
  368. 3760  FOR I=1 TO 3 : IF X3=K(I,1) AND Y3=K(I,2) THEN 3780
  369. 3770  NEXT I:I=3
  370. 3780  K(I,3)=0: GOTO 3920
  371. 3790  A$=" * ":Z1=X : Z2=Y : GOSUB 5620 :IF Z3=0 THEN 3810
  372. 3800  PRINT "STAR AT";X3;",";Y3;"ABSORBED TORPEDO ENERGY.":GOSUB 4210:GOTO 2300
  373. 3810  A$=">!<":Z1=X:Z2=Y:GOSUB 5620:IF Z3=0 THEN 3620
  374. 3820  PRINT "*** STARBASE DESTROYED ***": SOUND 45,5 :PRINT :B3=B3-1:B9=B9-1
  375. 3830  IF B9>0 OR K9>T-T0-T9 THEN 3870
  376. 3840  PRINT"THAT DOES IT, CAPTAIN!!  YOU ARE HEREBY RELIEVED OF COMMAND"
  377. 3850  PRINT"AND SENTENCED TO 99 STARDATES AT HARD LABOR ON CYGNUS 12!!":PRINT
  378. 3860  GOTO 4360
  379. 3870  PRINT"STARFLEET COMMAND REVIEWING YOUR RECORD TO CONSIDER" : SOUND 45,5
  380. 3880  PRINT "CONVENING A GENERAL COURT MARTIAL."
  381. 3890  PRINT "YOU ARE  ADVISED TO BE MORE CAREFUL IN THE FUTURE,"
  382. 3900  PRINT "GOOD LAWYERS ARE HARD TO FIND, ESPECIALLY IN THIS QUADRANT--"
  383. 3910  PRINT "THEY ARE ALMOST AS BAD AS DENUBIAN BLOODSUCKERS.":PRINT :D0=0
  384. 3920  Z1=X:Z2=Y:A$="   ":GOSUB 5460
  385. 3930  G(Q1,Q2)=K3*100+B3*10+S3:Z(Q1,Q2)=G(Q1,Q2):GOSUB 4210:GOTO 2300
  386. 3940  PRINT"TORPEDO MISSED":GOSUB 4210:GOTO 2300
  387. 3950  REM ********** SHIELD CONTROL ************************
  388. 3960  IF D(7)<0 THEN PRINT "SHIELD CONTROL INOPERABLE": BEEP : GOTO 2300
  389. 3970  PRINT "ENERGY AVAILABLE =";E+S;:INPUT"NUMBER OF UNITS TO SHIELDS";X
  390. 3980  IF X<0 OR S=X THEN PRINT"<SHIELDS UNCHANGED>":GOTO 2300
  391. 3990  IF X<=E+S THEN 4020
  392. 4000  PRINT "SHIELD CONTROL REPORTS  `THIS IS NOT THE FEDERATION TREASURY.'"
  393. 4010  PRINT "<SHIELDS UNCHANGED>": BEEP : GOTO 2300
  394. 4020  E=E+S-X:S=X:PRINT"DEFLECTOR CONTROL ROOM REPORT:"
  395. 4030  PRINT "  `SHIELDS NOW AT";INT(S);"UNITS PER YOUR COMMAND.'":GOTO 2300
  396. 4040  REM *************** DAMAGE CONTROL ***********************
  397. 4050  IF D(6)>=0 THEN 4160
  398. 4060  PRINT "DAMAGE CONTROL REPORT NOT AVAILABLE":BEEP :IF D0=0 THEN 2300
  399. 4070  D3=0:FOR I=1 TO 8:IF D(I)<0 THEN D3=D3+1
  400. 4080  NEXT I:IF D3=0 THEN 2300
  401. 4090  PRINT:D3=D3+D4:IF D3>=1 THEN D3=0.9
  402. 4100  PRINT "TECHNICIANS STANDING BY TO EFFECT REPAIRS TO YOUR SHIP;"
  403. 4110  PRINT "ESTIMATED TIME TO REPAIR:";0.01*INT(100*D3);"STARDATES"
  404. 4120  INPUT "WILL YOU AUTHORIZE THE REPAIR ORDER (Y/N)";A$
  405. 4130  IF A$<>"Y" THEN 2300
  406. 4140  FOR I=1 TO 8:IF D(I)<0 THEN D(I)=0
  407. 4150  NEXT I:T=T+D3+0.1
  408. 4160  PRINT:PRINT "DEVICE             STATE OF REPAIR":FOR R1=1 TO 8
  409. 4170  GOSUB 5520:PRINT G2$; LEFT$(Z$,25-LEN(G2$));INT(D(R1)*100)*0.01
  410. 4180  NEXT R1:PRINT:IF D0<>0 THEN 4070
  411. 4190  GOTO 2300
  412. 4200  REM ************ KLINGONS SHOOTING *************************
  413. 4210  IF K3<=0 THEN RETURN
  414. 4220  IF D0<>0 THEN PRINT "STARBASE SHIELDS PROTECT THE ENTERPRISE":SOUND 45,52835 RETURN
  415. 4230  FOR I=1 TO 3:IF K(I,3)<=0 THEN 4310
  416. 4240  H=INT((K(I,3)/RND(1))*(2+RND(1))):S=S-H:K(I,3)=K(I,3)/(3+RND(0))
  417. 4250  PRINT"UNIT HIT ON ENTERPRISE FROM SECTOR";K(I,1);",";K(I,2) :SOUND 55,4
  418. 4260  IF S<=0 THEN 4340
  419. 4270  PRINT"      SHIELDS DOWN TO";S;"UNITS>": BEEP :IF H<20 THEN 4310
  420. 4280  IF RND(1)>0.6 OR H/S<=0.02 THEN 4310
  421. 4290  R1=FNR(1):D(R1)=D(R1)-H/S-0.5*RND(1):GOSUB 5520
  422. 4300  PRINT"DAMAGE CONTROL REPORTS `";G2$;" DAMAGED BY THE HIT'"  : BEEP
  423. 4310  NEXT I:RETURN
  424. 4320  REM************ END OF GAME *********************************
  425. 4330  PRINT "IT IS STARDATE";T:GOTO 4360
  426. 4340  PRINT:PRINT"THE ENTERPRISE HAS BEEN DESTROYED.  THE FEDERATION ";
  427. 4350  GOTO 4330
  428. 4360  PRINT "THERE WERE";K9;"KLINGON BATTLE CRUISERS LEFT AT"
  429. 4370  PRINT "THE END OF YOUR MISSION."
  430. 4380  PRINT:PRINT:IF B9=0 THEN 4420
  431. 4390  PRINT "THE FEDERATION IS IN NEED OF A NEW STARSHIP COMMANDER"
  432. 4400  PRINT "FOR A SIMILAR MISSION -- IF THERE IS A VOLUNTEER,"
  433. 4410  INPUT "LET HIM STEP FORWARD AND ENTER `AYE'";A$:IF A$="AYE" THEN 1450
  434. 4420  END
  435. 4430  PRINT "CONGRATULATIONS, CAPTAIN!  THE LAST KLINGON BATTLE CRUISER"
  436. 4440  PRINT "MENACING THE FEDERATION HAS BEEN DESTROYED.":PRINT
  437. 4450  PRINT "YOUR EFFICIENCY RATING IS";1000*(K7/(T-T0))^2:GOTO 4380
  438. 4460  REM*********** SHORT RANGE SENSOR SCAN & STARTUP SUBROUTINE ***********
  439. 4470  FOR I=S1-1  TO S1+1:FOR J=S2-1 TO S2+1
  440. 4480  IF INT(I+0.5)<1 OR INT(I+0.5)>8 OR INT(J+0.5)<1 OR INT(J+0.5)>8 THEN 4500
  441. 4490  A$=">!<":Z1=I:Z2=J:GOSUB 5620:IF Z3=1 THEN 4510
  442. 4500  NEXT J:NEXT I:D0=0:GOTO 4560
  443. 4510  D0=1:C$="DOCKED":E=E0:P=P0
  444. 4520  PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES": BEEP :PRINT
  445. 4530  PRINT "IF YOU NEED OR WANT TO EFFECT REPAIRS TO DAMAGED EQUIPMENT,"
  446. 4540  PRINT "WHILE YOU ARE DOCKED, USE THE DAMAGE COMMAND (DAM)." :PRINT
  447. 4550  S=0:GOTO 4580
  448. 4560  IF K3>0 THEN C$="*RED*":GOTO 4580
  449. 4570  C$="GREEN":IF E<E0*0.1 THEN C$="YELLOW"
  450. 4580  IF D(2)>=0 THEN 4600
  451. 4590  PRINT:PRINT"*** SHORT RANGE SENSORS ARE OUT ***":BEEP:PRINT:RETURN
  452. 4600  O1$="---------------------------------":PRINT O1$ : FOR I=1 TO 8
  453. 4610  FOR J=(I-1)*24+1 TO (I-1)*24+22 STEP 3:PRINT" ";MID$(Q$,J,3);:NEXT J
  454. 4620  ON I GOTO 4630,4640,4650,4660,4670,4680,4690,4700
  455. 4630  PRINT"        STARDATE          ";INT(T*10)*0.1:GOTO 4710
  456. 4640  PRINT"        CONDITION          ";C$:GOTO 4710
  457. 4650  PRINT"        QUADRANT          ";Q1;",";Q2:GOTO 4710
  458. 4660  PRINT"        SECTOR            ";S1;",";S2:GOTO 4710
  459. 4670  PRINT"        PHOTON TORPEDOES  ";INT(P):GOTO 4710
  460. 4680  PRINT"        TOTAL ENERGY      ";INT(E+S):GOTO 4710
  461. 4690  PRINT"        SHIELDS           ";INT(S):GOTO 4710
  462. 4700  PRINT"        KLINGONS REMAINING";INT(K9)
  463. 4710  NEXT I:PRINT O1$:RETURN
  464. 4720  REM**************LIBRARY COMPUTER CODE****************
  465. 4730  IF D(8)<0 THEN PRINT"COMPUTER DISABLED":BEEP : GOTO 2300
  466. 4740  PRINT:PRINT
  467. 4750  PRINT "HIT `6' FOR A LISTING OF FUNCTIONS"
  468. 4760  PRINT "AVAILABLE FROM LIBRARY-COMPUTER...":PRINT:PRINT : GOTO 4770
  469. 4770  INPUT"COMPUTER ACTIVE AND AWAITING COMMAND";A:IF A<0 THEN 2300
  470. 4780  PRINT:H8=1:ON A+1 GOTO 4890,5020,5130,5390,5190,4870
  471. 4790  PRINT"FUNCTIONS AVAILABLE FROM LIBRARY-COMPUTER:"
  472. 4800  PRINT"   0 = CUMULATIVE GALACTIC RECORD"
  473. 4810  PRINT"   1 = STATUS REPORT"
  474. 4820  PRINT"   2 = PHOTON TORPEDE DATA"
  475. 4830  PRINT"   3 = STARBASE NAV DATA"
  476. 4840  PRINT"   4 = DIRECTION/DISTANCE CALCULATOR"
  477. 4850  PRINT"   5 = GALAXY `REGION NAME' MAP":PRINT:GOTO 4770
  478. 4860  REM*************** SETUP TO CHANGE CUM GAL RECORD TO GALAXY MAT **********
  479. 4870  H8=0:G5=1:PRINT"                        THE GALAXY":GOTO 4920
  480. 4880  REM*************** CUM GALACTIC RECORD ****************
  481. 4890  PRINT:PRINT"         ";
  482. 4900  PRINT"COMPUTER RECORD OF GALAXY FOR QUADRANT";Q1;",";Q2
  483. 4910  PRINT
  484. 4920  PRINT"         1      2      3      4      5      6      7     8"
  485. 4930  O1$="       -----  -----  -----  -----  -----  -----  -----  -----"
  486. 4940  PRINT O1$:FOR I=1 TO 8:PRINT I;:IF H8=0 THEN 4980
  487. 4950  FOR J=1 TO 8:PRINT"    ";:IF Z(I,J)=0 THEN PRINT"***";:GOTO 4970
  488. 4960  PRINT RIGHT$(STR$(Z(I,J)+1000),3);
  489. 4970  NEXT J:GOTO 5000
  490. 4980  Z4=I:Z5=1:GOSUB 5690:J0=INT(15-0.5*LEN(G2$)):PRINT TAB(J0);G2$;
  491. 4990  Z5=5:GOSUB 5690:J0=INT(39-0.5*LEN(G2$)):PRINT TAB(J0);G2$;
  492. 5000  PRINT:PRINT O1$:NEXT I:PRINT :POKE 1229,0:POKE 1237,1 :NULL=0:GOTO 2300
  493. 5010  REM*************** STATUS REPORT *****************
  494. 5020  PRINT "   STATUS REPORT:":X$="":IF K9>1 THEN X$="S"
  495. 5030  PRINT"KLINGON";X$;" LEFT: ";K9
  496. 5040  PRINT"MISSION MUST BE COMPLETED IN";0.1*INT((T0+T9-T)*10);"STARDATES"
  497. 5050  X$="S":IF B9<2 THEN X$="":IF B9<1 THEN 5080
  498. 5060  PRINT"THE FEDERATION IS MAINTAINING";B9;"STARBASE";X$;" IN THE GALAXY"
  499. 5070  GOTO 4050
  500. 5080  PRINT"YOUR POSITION IN THE GALAXY INDICATES "
  501. 5090  PRINT"THAT YOU HAVE NO STARBASES AVAILABLE TO YOU."
  502. 5100  PRINT:PRINT"CAPTAIN, YOU ARE ON YOUR OWN--BE CAREFUL!!!!"
  503. 5110  GOTO 4050
  504. 5120  REM************* TORPEDO, BASE NAV, D/D CALCULATOR ****************
  505. 5130  IF K3<=0 THEN 3400
  506. 5140  X$="":IF K3>1 THEN X$="S"
  507. 5150  PRINT "FROM ENTERPRISE TO KLINGON BATTLE CRUISER";X$
  508. 5160  H8=0: FOR I=1 TO 3: IF K(I,3)<=0 THEN 5380
  509. 5170  W1=K(I,1):X=K(I,2)
  510. 5180  C1=S1:A=S2: GOTO 5230
  511. 5190  PRINT "DIRECTION/DISTANCE CALCULATOR:"
  512. 5200  PRINT "YOU ARE AT QUADRANT  ";Q1;",";Q2;"  SECTOR  ";S1;",";S2
  513. 5210  PRINT "PLESE ENTER": INPUT "   INITIAL COORDINATES (X,Y)";C1,A
  514. 5220  INPUT "   FINAL COORDINATES (X,Y)";W1,X
  515. 5230  X=X-A:A=C1-W1: IF X<0 THEN 5310
  516. 5240  IF A<0 THEN 5330
  517. 5250  IF X>0 THEN 5270
  518. 5260  IF A=0 THEN C1=5: GOTO 5280
  519. 5270  C1=1
  520. 5280  IF ABS(A)<=ABS(X) THEN 5300
  521. 5290  PRINT"DIRECTION ="; C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)): GOTO 5370
  522. 5300  PRINT"DIRECTION =";C1+(ABS(A)/ABS(X)): GOTO 5370
  523. 5310  IF A>0 THEN C1=3 : GOTO 5340
  524. 5320  IF X<>0 THEN C1=5 : GOTO 5280
  525. 5330  C1=7
  526. 5340  IF ABS(A)>=ABS(X) THEN 5360
  527. 5350  PRINT "DIRECTION ="; C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)) :GOTO 5370
  528. 5360  PRINT "DIRECTION =";C1+(ABS(X)/ABS(A))
  529. 5370  PRINT "DISTANCE ="; SQR(X^2+A^2): IF H8=1 THEN 2300
  530. 5380  NEXT I : GOTO 2300
  531. 5390  IF B3<>0 THEN PRINT"FROM ENTERPRISE TO STARBASE:":W1=B4:X=B5: GOTO 5180
  532. 5400  PRINT "MR. SPOCK REPORTS,  `SENSORS SHOW NO STARBASES IN THIS";
  533. 5410  PRINT " QUADRANT.'" : GOTO 2300
  534. 5420  REM ********** FIND EMPTY PLACE IN QUADRANT (FOR THINGS) **********
  535. 5430  R1=FNR(1):R2=FNR(1):A$="   ":Z1=R1:Z2=R2: GOSUB 5620: IF Z3=0 THEN 5430
  536. 5440  RETURN
  537. 5450  REM *********** INSERT IN STRING ARRAY FOR QUADRANT ****************
  538. 5460  S8=INT(Z2-0.5)*3+INT(Z1-0.5)*24+1
  539. 5470  IF LEN(A$)<>3 THEN PRINT"ERROR": STOP
  540. 5480  IF S8=1 THEN Q$=A$+RIGHT$(Q$,189) : RETURN
  541. 5490  IF S8=190 THEN Q$=LEFT$(Q$,189)+A$ : RETURN
  542. 5500  Q$=LEFT$(Q$,S8-1)+A$+RIGHT$(Q$,190-S8) : RETURN
  543. 5510  REM **************** PRINTS DEVICE NAME **************************
  544. 5520  ON R1 GOTO 5530,5540,5550,5560,5570,5580,5590,5600
  545. 5530  G2$="WARP ENGINES": RETURN
  546. 5540  G2$="SHORT RANGE SENSORS": RETURN
  547. 5550  G2$="LONG RANGE SENSORS": RETURN
  548. 5560  G2$="PHASER CONTROL": RETURN
  549. 5570  G2$="PHOTON TUBES": RETURN
  550. 5580  G2$="DAMAGE CONTROL": RETURN
  551. 5590  G2$="SHIELD CONTROL": RETURN
  552. 5600  G2$="LIBRARY-COMPUTER": RETURN
  553. 5610  REM ************** STRING COMPARISON IN QUADRANT ARRAY ****************
  554. 5620  Z1=INT(Z1+0.5):Z2=INT(Z2+0.5):S8=(Z2-1)*3+(Z1-1)*24+1:Z3=0
  555. 5630  IF MID$(Q$,S8,3)<>A$ THEN RETURN
  556. 5640  Z3=1: RETURN
  557. 5650  REM *********** QUADRANT NAME IN G2$ FROM Z4, Z5 (=Q1,Q2) **************
  558. 5660  REM **** CALL WITH G5=1 TO GET REGION NAME ONLY ****
  559. 5670  REM ************ QUADRANT NAME IN G2$ FROM Z4, Z5 (=Q1,Q2) ****
  560. 5680  REM ************ CALL WITH G5=1 TO GET REGION NAME ONLY ****
  561. 5690  IF Z5<=4 THEN ON Z4 GOTO 5710,5720,5730,5740,5750,5760,5770,5780
  562. 5700  GOTO 5790
  563. 5710  G2$="ANTARES":GOTO 5880
  564. 5720  G2$="RIGEL":GOTO 5880
  565. 5730  G2$="PROCYON":GOTO 5880
  566. 5740  G2$="VEGA":GOTO 5880
  567. 5750  G2$="CANOPUS":GOTO 5880
  568. 5760  G2$="ALTAIR":GOTO 5880
  569. 5770  G2$="SAGITTARIUS":GOTO 5880
  570. 5780  G2$="POLLUX":GOTO 5880
  571. 5790  ON Z4 GOTO 5800,5810,5820,5830,5840,5850,5860,5870
  572. 5800  G2$="SIRIUS":GOTO 5880
  573. 5810  G2$="DENEB":GOTO 5880
  574. 5820  G2$="CAPELLA":GOTO 5880
  575. 5830  G2$="BETELGEUSE":GOTO 5880
  576. 5840  G2$="ALDEBARAN":GOTO 5880
  577. 5850  G2$="REGULUS":GOTO 5880
  578. 5860  G2$="ARCTURUS":GOTO 5880
  579. 5870  G2$="SPICA"
  580. 5880  IF G5<>1 THEN ON Z5 GOTO 5900,5910,5920,5930,5900,5910,5920,5930
  581. 5890  RETURN
  582. 5900  G2$=G2$+" I":RETURN
  583. 5910  G2$=G2$+" II":RETURN
  584. 5920  G2$=G2$+" III":RETURN
  585. 5930  G2$=G2$+" IV":RETURN
  586. 10500  IN$=INKEY$:IF IN$="" THEN 10500 ELSE CLS:RETURN
  587.